package com.roads.project.mapper;

import java.math.BigDecimal;
import java.util.List;
import com.roads.project.domain.ProProject;

/**
 * 建设项目Mapper接口
 * 
 * @author nhp
 * @date 2021-11-15
 */
public interface ProProjectMapper {

    /**
     * 查询建设项目
     * 
     * @param projectId 建设项目主键
     * @return 建设项目
     */
    ProProject selectProProjectByProjectId(Integer projectId);

    /**
     * 根据项目编号查询建设项目信息
     *
     * @param projectCode 建设项目编号
     * @return 建设项目
     */
    ProProject getProjectByCode(String projectCode);

    /**
     * 查询全部建设项目列表
     *
     * @param proProject 建设项目
     * @return 建设项目集合
     */
    List<ProProject> selectProProjectListAll(ProProject proProject);

    /**
     * 查询建设项目列表
     * 
     * @param proProject 建设项目
     * @return 建设项目集合
     */
    List<ProProject> selectProProjectList(ProProject proProject);

    /**
     * 校验建设项目编号是否唯一
     *
     * @param projectCode 建设项目编号
     * @return 结果
     */
    ProProject checkProjectCodeUnique(String projectCode);

    /**
     * 通过项目ID查询机构
     *
     * @param projectId 项目ID
     * @return 数量
     */
    int countInstitutionByProjectId(Integer projectId);

    /**
     * 新增建设项目
     * 
     * @param proProject 建设项目
     * @return 结果
     */
    int insertProProject(ProProject proProject);

    /**
     * 修改建设项目
     * 
     * @param proProject 建设项目
     * @return 结果
     */
    int updateProProject(ProProject proProject);

    /**
     * 删除建设项目
     * 
     * @param projectId 建设项目主键
     * @return 结果
     */
    int deleteProProjectByProjectId(Integer projectId);

    /**
     * 批量删除建设项目
     * 
     * @param projectIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteProProjectByProjectIds(Integer[] projectIds);

    /**
     * 获取项目合同金额--根据标段统计就可以，不需要统计分部的
     *
     * @param projectId 项目ID
     * @return 合同金额
     */
    BigDecimal getProjectContractTotal(Integer projectId);

}
